/**
 * 设备状态
 * @param {Number | String} value 设备的状态值
 * @returns {String} 设备状态的文字描述
 */
const statusTextConvert = (
  status: number,
  isOnline: boolean
): string => {
  if (!isOnline) {
    return '设备离线';
  }
  const statusMap: { [key: number]: string } = {
    0: '待机中',
    1: '工作中',
    2: '预约中',
    3: '保温中'
  };
  
  return statusMap[status] || '未知状态';
};

/**
 *
 * @param {Number | String} value 设备的状态值
 * @returns {String} 设备状态的文字描述
 */
const runningTextConvert = (value: number): string => {
  // 0=待机 1=工作中 2=预约中 3=保温中
  const data: { [key: string]: string } = {
    1: '工作',
    2: '预约',
    3: '保温'
  };
  return data[value];
};

// 故障标题
const faultTextConvert = (value: number): string => {
  const data: { [key: string]: string } = {
    1: 'E1 NTC短路',
    2: 'E2 提杯',
    3: 'E3 干烧故障',
  };
  return data[value] || '未知故障';
};
// 故障详情
const faultTextdescription = (value: number): string => {
  const data: { [key: string]: string } = {
    1: '检查NTC线路',
    2: '检查杯子或杯盖是否放好',
    3: '检查杯子是否糊底',
  };
  return data[value] || '未知故障';
};

/**
 * 按钮文字过滤
 * @param {Number} status 运行状态 0-待机 1-运行中 2=预约中 3=保温中
 * @param {Number } _preTime 预约
 * @param {Number } mode 模式 9-保温
 * @returns {String} 设备状态的文字描述
 */
type ButtonStatus = {
  [key: number]: string;
};
const btnFitersText = (
  status: number,
  appointment: number,
  mode: number
): string => {
  // 运行状态的映射
  const statusText: ButtonStatus = {
    1: '结束运行',
    2: '取消预约',
    3: '取消保温'
  };

  // 如果状态存在于映射中，直接返回对应文本
  if (statusText[status]) {
    return statusText[status];
  }

  // 待机状态(status === 0)的逻辑
  return appointment ? '开始预约' 
    : mode === 9 ? '开始保温' 
    : '开始运行';
};

const workTimeMode = (value: number): number => {
  // 0-无 1-清洗 2-烘干 3-研磨 4-果汁 5-绵粥 6-豆浆 7-浓汤 8-辅食 9-保温
  const data: { [key: number]: number } = {
    1: 120,
    2: 0,
    3: 120,
    4: 210,
    5: 18,
    6: 29,
    7: 28,
    8: 11,
    9: 0,
  };
  return data[value];
};

export {
  workTimeMode,
  btnFitersText,
  statusTextConvert,
  runningTextConvert,
  faultTextConvert,
  faultTextdescription
};
